DevOps专题 |监控,可观测性与数据存储
10月30日,全球权威数据调研机构IDC正式发布《IDCMarketScape: 中国DevOps云市场2019,厂商评估》报告。京东云凭借丰富的场景和实践能力,以及高质量的服务交付和平台稳定性,取得优异的成绩,跻身“Major Players”(核心厂商)位置。
京东云DevOps能力起源于自身的业务实践,针对京东集团的复杂业务场景打造并经受住多次618、11.11电商大促的严峻考验,保证了高效高质的交付和对变化的灵活应对。能够支持复杂场景的自动化运维需求、实现工具链产品与平台化产品结合,帮助客户根据不同的需求灵活定制方案。
一、监控需求的产生
黑盒到白盒
资源到业务
二、可观测性的提出
metrics
logging
tracing
events
三、存储
Metrics
数据模型。描述信息从 metric naming 中剥离出来,形成 tag。现代的 tsdb 通常都已采用 tag 化的数据模型。
数据类型。从简单的数值记录,到为不同场景衍生出 gauge, counter, timer 等等更多的数据类型
索引结构。索引结构跟数据模型密切相关,在 tag 为主的现代 tsdb, 倒排索引已经是主流索引结构。
数据存储。从 rrdtool 写环形队列到文件的时代,到 OpenTSDB 这样自行编解码写入底层数据库,再到 Facebook 提出的时序数据压缩算法,通常会是若干种技术的综合使用,并且针对不同的数据类型采用不同方案
logging
集中存储/检索。使得工程师免于分别登陆机器查看日志之苦,日志被统一采集,集中存储于日志服务,并提供统一的检索服务。这个过程牵扯到例如日志格式统一,解析,结构化等等问题。
日志的监控。
原文中的关键字,例如 error, fatal 大概率意味着值得关注的错误产生
从日志中提取的 metrics,例如 access log 中携带的大量数据,都可以被提取成有用的信息。至于提取的手段,有的通过客户端在日志本地进行解析,有的在集中存储过程中进行解析。
tracing
不同业务的 trace 路径通常不同,也就是 span 不同,因而稀疏
同种业务的 trace ,在不同内外部条件下,路径也不同。例如访问数据库,是否命中缓存,都会产生不同的 span 链
访问正常/异常的 trace ,产生不同 span
二级索引:在以 HBase, Cassandra 为基础的方案中比较常见
引入倒排索引,在二级索引方案无法满足全部查询请求时,可能会引入 Elasticsearch 辅助索引,提升查询灵活性
Events
集中存储:事件种类很多,较难归纳共同的查询纬度,所以倒排索引在这种无法事先确定查询纬度的场景下,是非常合适的存储结构
Dashboard: 以恰当的方式,把事件查询 /展示出来。上文提到 Etsy 的博客中,展示了很好的实践方法,使得工程师能够通过 dashboard ,非常轻松确认网站登陆失败,与登录模块部署事件之间的关系。